import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
// 响应接口
export interface GetUserPageRes {
    code: number;
    data: {
        total: number;
        size: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            // 用户ID */
            id: number;
            // 用户名 */
            username: string;
            // 密码 */
            password: string;
            // 头像地址 */
            avatar: string;
            // 姓名 */
            name: string;
            // 员工编号 */
            code: string;
            // 状态:0->禁用,1->启用 */
            status: number;
            // 工作手机号 */
            workPhone: string;
            // 工作手机号 */
            personalPhone: string;
            // 岗位编号 */
            jobCode: string;
            // 岗位名称 */
            jobName: string;
            // 专业条线 */
            professionalLine: string;
            // 负责区域 */
            projectNames: string;
            // 过期时间 */
            expireTime: Record<string, unknown>;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
export interface queryAccountParams {
    roleId?: number;
    keyword?: string;
    current?: number;
    size?: number;
}
/**
 * 获得用户信息分页
 * @param {string} roleId
 * @param {string} keyword 姓名/电话
 * @param {number} current 当前第几页(默认1)
 * @param {number} size 每页条数(默认20)
 * @returns
 */
export function getUserPage(params: queryAccountParams): Promise<GetUserPageRes> {
    return request.get(`/system/user/page?${qs.stringify(params)}`);
}
// 参数接口
export interface UpdateUserParams {
    // 用户code */
    code: string;
    // 登录账号 */
    username: string;
    // 密码 */
    password: string;
    // 状态:0->禁用,1->启用 */
    status: number;
    // 角色ID列表 */
    roleIds: Record<string, unknown>[];
    // 负责项目code列表 */
    projectCodes: Record<string, unknown>[];
    // 过期时间(yyyy-MM-dd HH:mm:ss) */
    expireTime?: Record<string, unknown>;
    // 用户ID */
    id: number;
    txList: Record<string, unknown>[];
}
/**
 * 更新用户信息
 * @param {object} params 管理后台 - 用户信息更新 Request VO
 * @param {string} params.code 用户code
 * @param {string} params.username 登录账号
 * @param {string} params.password 密码
 * @param {number} params.status 状态:0->禁用,1->启用
 * @param {array} params.roleIds 角色ID列表
 * @param {array} params.projectCodes 负责项目code列表
 * @param {object} params.expireTime 过期时间(yyyy-MM-dd HH:mm:ss)
 * @param {number} params.id 用户ID
 * @returns
 */
export function updateUser(params: UpdateUserParams): Promise<ResponseData<boolean>> {
    return request.put(`/system/user/update`, params);
}
// 参数接口
export interface CreateUserParams {
    // 用户code */
    code: string;
    // 登录账号 */
    username: string;
    // 密码 */
    password: string;
    // 状态:0->禁用,1->启用 */
    status: number;
    // 角色ID列表 */
    roleIds: Record<string, unknown>[];
    // 负责项目code列表 */
    projectCodes: Record<string, unknown>[];
    // 过期时间(yyyy-MM-dd HH:mm:ss) */
    expireTime?: Record<string, unknown>;
    txList: Record<string, unknown>[];
}
/**
 * 新增供方
 * @param {object} params 管理后台 - 用户信息创建 Request VO
 * @param {string} params.code 用户code
 * @param {string} params.username 登录账号
 * @param {string} params.password 密码
 * @param {number} params.status 状态:0->禁用,1->启用
 * @param {array} params.roleIds 角色ID列表
 * @param {array} params.projectCodes 负责项目code列表
 * @param {object} params.expireTime 过期时间(yyyy-MM-dd HH:mm:ss)
 * @returns
 */
export function createUser(params: CreateUserParams): Promise<ResponseData<number>> {
    return request.post(`/system/user/create`, params);
}
// 响应接口
export interface ExportUserExcelRes {}
/**
 * 导出用户信息 Excel
 * @param {string} exportReqVO 管理后台 - 用户信息分页 Request VO
 * @returns
 */
export function exportUserExcel(exportReqVO: object): Promise<ExportUserExcelRes> {
    return request.get(`/system/user/export-excel?exportReqVO=${exportReqVO}`);
}
/**
 * 删除用户信息
 * @param {string} id
 * @returns
 */
export function deleteUser(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/system/user/delete/${id}`);
}
// 参数接口
export interface ResetPwdParams {
    // 用户ID */
    userId: number;
    // 密码 */
    password: string;
}
/**
 * 重置密码
 * @param {object} params SystemPasswordResetArgs
 * @param {number} params.userId 用户ID
 * @param {string} params.password 密码
 * @returns
 */
export function resetPwd(params: ResetPwdParams): Promise<ResponseData<boolean>> {
    return request.post(`/system/pwd/reset`, params);
}
// 参数接口
export interface UpdatePasswordParams {
    // 原密码 */
    oldPassword: string;
    // 新密码 */
    newPassword: string;
    // 新密码 */
    confirmedPassword: string;
}
/**
 * 修改密码
 * @param {object} params SystemPasswordUpdateArgs
 * @param {string} params.oldPassword 原密码
 * @param {string} params.newPassword 新密码
 * @param {string} params.confirmedPassword 新密码
 * @returns
 */
export function updatePassword(params: UpdatePasswordParams): Promise<ResponseData<boolean>> {
    return request.post(`/system/pwd/updatepwd`, params);
}
// 响应接口
export interface GetUserRes {
    code: number;
    data: {
        // 用户ID */
        id: number;
        // 用户名 */
        username: string;
        // 姓名 */
        name: string;
        // 员工编号 */
        code: string;
        // 状态:0->禁用,1->启用 */
        status: number;
        // 工作手机号 */
        workPhone: string;
        // 岗位名称 */
        jobName: string;
        // 过期时间 */
        expireTime: any;
        // 角色ID列表 */
        roleIds: Record<string, unknown>[];
        // 项目code列表 */
        projectCodeList: Record<string, unknown>[];
    };
    msg: string;
}
/**
 * 获得用户信息
 * @param {string} id
 * @returns
 */
export function getUser(id: number): Promise<GetUserRes> {
    return request.get(`/system/user/get/${id}`);
}


export function getUserRole(code:string): Promise<ResponseData<any>> {
    return request.get(`/system/user/role/${code}`);
}